package peca;
import javax.swing.ImageIcon;

import estrutura.Celula;
import estrutura.Peca;


public class Cavalo extends Peca{
	
	public Cavalo(CorPeca corPeca) {
		 StringBuilder caminhoImagem = new StringBuilder("images/cavalo");
		 caminhoImagem.append(corPeca.sufix()).append(".png");
		 setImagem(new ImageIcon(getClass().getClassLoader().getResource(caminhoImagem.toString())));
		 setCor(corPeca);
		 setNome(corPeca == CorPeca.BRANCA ? CAVALO_B : CAVALO_P);
	}

	@Override
	public boolean isMovimentoValido(Celula origem, Celula destino, Celula[][] celulas) {
		if(isRotaValida(origem, destino) && isNotPecaNoCaminho(origem, destino, celulas)){
			return true;
		}
	
		return false;
	}
	
	private boolean isRotaValida(final Celula origem, final Celula destino) {
		int o = Integer.parseInt(origem.getText());
		int d = Integer.parseInt(destino.getText());
		int resultado = o - d;
		resultado = resultado * Integer.signum(resultado);
		return resultado == 12 || resultado == 8 ||  resultado == 19 ||  resultado == 21;
	}
	
	private boolean isNotPecaNoCaminho(Celula origem, Celula destino, Celula[][] celulas) {
		return destino.getPeca()==null || (origem.getPeca().getCor()!=destino.getPeca().getCor());
	}		
	
}
